10 POKE53281,1 :POKE53280,0 20 PRINT"[147] THIS PROGRAM IS DESIGNED TO MEASURE " 30 PRINT" YOUR TYPING SPEED AND TO HELP YOU " 40 PRINT"IMPROVE IT. IF YOU WOULD LIKE TO HAVE " 50 PRINT" YOUR RATING MEASURED, TYPE 'R'." 60 PRINT"OTHERWISE GIVE YOUR BEST RATING SO FAR." 70 GET A$:IF A$=""THEN 70 80 IF A$="R" THEN PRINT"R";:GOTO 530 90 IF ASC(A$)<49ORASC(A$)>57THEN70 100 RA=10*VAL(A$) 110 PRINTA$; 120 GETA$:IFA$=""THEN120 130 IF ASC(A$)<48 OR ASC(A$)>57 THEN 120 140 PRINTA$;:RA=RA+VAL(A$) 150 GOSUB810 160 GOSUB860 170 GOSUB240: 180 N=INT(2000/RA):GOSUB340 190 Y=(Z/LEN(X$))/60 200 RB=10+90/(1+Y) 210 RA=INT(0.8*RA+0.2*RB ) 220 D=D+1 230 GOTO150 240 PRINT"" 250 PRINT"COPY THE FOLLOWING SENTENCE AS FAST AS" 260 PRINT"YOU CAN. START WITH A SPACE":PRINT 270 R=LEN(X$):J=1 280 IFR<23THEN310 290 PRINTMID$(X$,J,22); 300 J=J+22:R=R-22:GOTO280 310 PRINTMID$(X$,J,R);" " 320 RETURN 330 PRINT" " 340 PRINT"" 350 POKE1303,160 360 R=LEN(X$) 370 GETA$:IFA$=""THEN370 380 IFA$<>" "THEN370 390 POKE1303,32 400 Z=TI 410 PRINTA$; 420 FORJ=2TOR:W=1303+J 430 POKEW,PEEK(W)+128:T=0 440 GETA$:IFA$<>""THEN470 450 T=T+1:IFT<>NTHEN440 460 Q=245:GOSUB620:T=0:GOTO440 470 IFA$=MID$(X$,J,1)THEN490 480 Q=210:FORK=1TO5:GOSUB620:NEXT:GOTO440 490 PRINTA$;:POKEW,PEEK(W)-128 500 NEXTJ 510 Z=TI-Z:RETURN 520 RA=10:D=-5:GOTO150 530 PRINT"[147] THE MACHINE WILL":PRINT"GIVE YOU SOME":PRINT"SENTENCES TO COPY AS" 540 PRINT"FAST AS YOU CAN." :PRINT 550 PRINT"THE BLACK MARKER" 560 PRINT"SHOWS THE NEXT LETTER" 570 PRINT"(OR SPACE) EXPECTED." 580 PRINT"START WITH A SPACE!":PRINT:PRINT:PRINT 590 PRINT"NOW STRIKE ANY KEY":PRINT"TO START THE TEST" 600 GETA$:IFA$=""THEN600 610 GOTO520 620 IF D<0THEN RETURN 630 REM POKE54296,15 640 REM ***** BELL SOUND ***** 650 S=54272 660 POKE S+1,130:POKE S+5,9 670 POKE S+15,30:POKE S+24,15 680 POKE S+4,21 690 FOR T=1 TO 200 :NEXT 700 POKE S+4,20:RETURN 710 REM SELECTS A WORD BETWEEN A AND B 720 RESTORE 730 C=A:Q=245 740 IF C=0 THEN 760 750 READ Y$:C=C-1:GOTO740 760 C=INT((B-A+1)*RND(1)) 770 IFC=0THEN790 780 READY$:C=C-1:Q=230:GOTO770 790 X$=X$+" "+Y$ 800 RETURN 810 IFD<0THENPRINT"[147]TEST SENTENCE";D+6:RETURN 820 PRINT"[147] [176][192][192][192][192][192][192][174]" 830 PRINT "RATING: [221]  ";RA;"[144][221]" 840 PRINT " [173][192][192][192][192][192][192][189]" 850 RETURN 860 X$="":GOSUB940 870 IF RND(1)>0.5THEN 900 880 GOSUB1000:GOSUB1020 890 GOTO910 900 GOSUB1010 910 IFRND(1)>0.25THEN930 920 GOSUB1100 930 RETURN 940 IF RND(1)>0.3THEN960 950 GOSUB1120:RETURN 960 X$=X$+" THE" 970 IF RND(1)>0.3THEN990 980 GOSUB1130 990 GOSUB1140:RETURN 1000 A=43:B=50:GOSUB710:RETURN 1010 A=26:B=35:GOSUB710:RETURN 1020 IF RND(1)>0.6THEN1060 1030 X$=X$+" "+"THE" 1040 IFREN(1)<0.35THENGOSUB1150 1050 GOSUB1170:RETURN 1060 IF RND(1)>0.5THENX$=X$+" "+"SOME":GOTO1080 1070 GOSUB1160 1080 IFRND(1)<0.35THENGOSUB1150 1090 GOSUB1180:RETURN 1100 IF RND(1)>0.7THENX$=X$+" "+"VERY" 1110 GOSUB 1190:RETURN 1120 A=1:B=10:GOSUB710:RETURN 1130 A=11:B=17:GOSUB710:RETURN 1140 A=18:B=25:GOSUB710:RETURN 1150 A=75:B=79:GOSUB710:RETURN 1160 A=58:B=68:GOSUB710:RETURN 1170 A=51:B=57:GOSUB710:RETURN 1180 A=69:B=74:GOSUB710:RETURN 1190 A=36:B=42:GOSUB710:RETURN 1200 DATA ANDREW,JOHN,JILL,SUSAN,XAVIER,VANESSA,BILL,PENNY,ZENA,JOE 1210 DATASILLY,FAT,GREEDY,TALL,UNTIDY,UNWASHED,STUPID 1220 DATABOY,GIRL,MAID,SCHOOLBOY,TEACHER,PROFESSOR,QUEEN,DANCER 1230 DATAWEPT,LAUGHED,"RAN AWAY",FELL,ESCAPED,FAINTED,SNORED,TALKED,STOPPED,USED 1240 DATAQUICKLY,SLOWLY,FAST,NOISILY,SOFTLY,SLYLY,WITHOUT ANY FUSS 1250 DATAGOBBLED,PINCHED,BOUGHT,SOLD,STOLE,FETCHED,BROUGHT,BOILED 1260 DATADUCK,WINE,WHISKY,BEANS,RABBIT,LOAF,SYNTHETIC CREAM 1270 DATATWO,THREE,4,5,6,7,8,10,13,18,20 1280 DATACAKES,POTATOES,APPLES,PIES,SCONES,ROLLS 1290 DATAFOUL,MOULDY,ROTTEN,STALE,GOOD